package org.fujay.commons.langchain4j.core.model;

import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.StreamingChatModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import org.fujay.commons.langchain4j.core.enumd.ModelSupplierEnum;
import org.fujay.commons.langchain4j.core.options.LlmOptions;

/**
 * @author slm
 * @description 模型接口
 */

public interface ModelProvider {

    /**
     * @author sunliming
     * @description 对话模型
     */
    ChatModel ChatModel(LlmOptions llmOptions);

    /**
     * @author sunliming
     * @description 生成流式对话模型
     */
    StreamingChatModel streamingChatModel(LlmOptions llmOptions);

    /**
     * @author sunliming
     * @description 向量模型
     */
    EmbeddingModel embeddingModel(LlmOptions llmOptions);

    /**
     * @author sunliming
     * @description 模型供应商
     */
    ModelSupplierEnum modelSupplierEnum();

}
